亚洲欧美日韩中文在线专区|韩漫漫画页面登录漫画弹窗|哈弗是国产车吗|55bbb|欧美黑人xxxxww|野花视频免费观看6|七七七影院在线观看

聯(lián)
咨詢(xún)熱線:

17661095540

聯(lián)系QQ:

2863379292

官方微信:

移動(dòng)開(kāi)發(fā):序列化與反序列化Parcelable和Serializable淺析

微信營(yíng)銷(xiāo)

導(dǎo)讀:在日常的應(yīng)用開(kāi)發(fā)中,我們可能需要讓某些對(duì)象離開(kāi)內(nèi)存空間,存儲(chǔ)到物理磁盤(pán),以便長(zhǎng)期保存,同時(shí)也能減少對(duì)內(nèi)存的壓力,而在需要時(shí)再將其從磁盤(pán)讀取到內(nèi)存,比如將某個(gè)特定的對(duì)象保存到

發(fā)表日期:2019-12-10

文章編輯:興田科技

瀏覽次數(shù):7268

標(biāo)簽:

在日常的應(yīng)用開(kāi)發(fā)中,我們可能需要讓某些對(duì)象離開(kāi)內(nèi)存空間,存儲(chǔ)到物理磁盤(pán),以便長(zhǎng)期保存,同時(shí)也能減少對(duì)內(nèi)存的壓力,而在需要時(shí)再將其從磁盤(pán)讀取到內(nèi)存,比如將某個(gè)特定的對(duì)象保存到文件中,隔一段時(shí)間后再把它讀取到內(nèi)存中使用,那么該對(duì)象就需要實(shí)現(xiàn)序列化操作,在Java中可以使用Serializable接口實(shí)現(xiàn)對(duì)象的序列化,而在android中既可以使用Serializable接口實(shí)現(xiàn)對(duì)象序列化也可以使用parcelable接口實(shí)現(xiàn)對(duì)象序列化,但是在內(nèi)存操作時(shí)更傾向于實(shí)現(xiàn)parcelable接口,這樣會(huì)使用傳輸效率更高效。接下來(lái)我們將分別詳細(xì)地介紹這樣兩種序列化操作。

了解序列化與反序列

序列化

由于存在于內(nèi)存中的對(duì)象都是暫時(shí)的,無(wú)法長(zhǎng)期駐存,為了把對(duì)象的狀態(tài)保持下來(lái),這時(shí)需要把對(duì)象寫(xiě)入到磁盤(pán)或者其他介質(zhì)中,這個(gè)過(guò)程就叫做序列化。

反序列化

反序列化恰恰是序列化的反向操作,也就是說(shuō),把已存在在磁盤(pán)或者其他介質(zhì)中的對(duì)象,反序列化(讀取)到內(nèi)存中,以便后續(xù)操作,而這個(gè)過(guò)程就叫做反序列化。

概括性來(lái)說(shuō)序列化是指將對(duì)象實(shí)例的狀態(tài)存儲(chǔ)到存儲(chǔ)媒體(磁盤(pán)或者其他介質(zhì))的過(guò)程。在此過(guò)程中,先將對(duì)象的公共字段和私有字段以及類(lèi)的名稱(chēng)(包括類(lèi)所在的程序集)轉(zhuǎn)換為字節(jié)流,然后再把字節(jié)流寫(xiě)入數(shù)據(jù)流。在隨后對(duì)對(duì)象進(jìn)行反序列化時(shí),將創(chuàng)建出與原對(duì)象完全相同的副本。

實(shí)現(xiàn)序列化的必要條件

一個(gè)對(duì)象要實(shí)現(xiàn)序列化操作,該類(lèi)就必須實(shí)現(xiàn)了Serializable接口或者parcelable接口,其中Serializable接口是在java中的序列化抽象類(lèi),而parcelable接口則是android中特有的序列化接口,在某些情況下,parcelable接口實(shí)現(xiàn)的序列化更為高效,關(guān)于它們的實(shí)現(xiàn)案例我們后續(xù)會(huì)分析,這里只要清楚知道實(shí)現(xiàn)序列化操作時(shí)必須實(shí)現(xiàn)Serializable接口或者parcelable接口之一即可。

序列化的應(yīng)用情景

主要有以下情況(但不限于以下情況)

1)內(nèi)存中的對(duì)象寫(xiě)入到硬盤(pán);

2)用套接字在網(wǎng)絡(luò)上傳送對(duì)象;

3)通過(guò)RMI(RemoteMethodInvoke遠(yuǎn)程方法調(diào)用)傳輸對(duì)象;

Serializable

Serializable是java提供的一個(gè)序列化接口,它是一個(gè)空接口,專(zhuān)門(mén)為對(duì)象提供標(biāo)準(zhǔn)的序列化和反序列化操作,使用Serializable實(shí)現(xiàn)類(lèi)的序列化比較簡(jiǎn)單,只要在類(lèi)聲明中實(shí)現(xiàn)Serializable接口即可,同時(shí)強(qiáng)烈建議聲明序列化標(biāo)識(shí)。

parcelable

鑒于Serializable在內(nèi)存序列化上開(kāi)銷(xiāo)比較大,而內(nèi)存資源屬于android系統(tǒng)中的稀有資源(android系統(tǒng)分配給每個(gè)應(yīng)用的內(nèi)存開(kāi)銷(xiāo)都是有限的),為此android中提供了parcelable接口來(lái)實(shí)現(xiàn)序列化操作,parcelable的性能比Serializable好,在內(nèi)存開(kāi)銷(xiāo)方面較小,所以在內(nèi)存間數(shù)據(jù)傳輸時(shí)推薦使用parcelable,如通過(guò)Intent在activity間傳輸數(shù)據(jù),而parcelable的缺點(diǎn)就使用起來(lái)比較麻煩。

相關(guān)推薦

更多新聞

  • 8-1

    2019

    微信營(yíng)銷(xiāo) / 2019-08-01

    跨境電商怎樣做6.2億人口的拉美市場(chǎng)?

    當(dāng)前,拉美市場(chǎng)電商環(huán)境發(fā)展較為成熟,本土的電商歷經(jīng)了多年的成長(zhǎng),形成了固定的網(wǎng)購(gòu)消費(fèi)模式。此外,當(dāng)?shù)?.2億的人口紅利及55%的網(wǎng)絡(luò)覆蓋為此處的電商發(fā)展提供了巨大的消費(fèi)基礎(chǔ)。

    View details

  • 8-24

    2023

    微信營(yíng)銷(xiāo) / 2023-08-24

    樂(lè)平網(wǎng)絡(luò)推廣:有效宣傳和推廣您的品牌

    樂(lè)平網(wǎng)絡(luò)推廣是企業(yè)成功的關(guān)鍵之一,通過(guò)合理的SEO和市場(chǎng)推廣策略,可以使您的品牌在競(jìng)爭(zhēng)激烈的市場(chǎng)中脫穎而出。通過(guò)擴(kuò)大品牌知名度、提高網(wǎng)站流量和提高轉(zhuǎn)化率,您可以獲得更多銷(xiāo)售機(jī)會(huì)和利潤(rùn)增長(zhǎng)。不斷改進(jìn)和適應(yīng)新的市場(chǎng)趨勢(shì)將使您的樂(lè)平網(wǎng)絡(luò)推廣策略保持活力并取得成功。不妨在未來(lái)的推廣中嘗試一些新的策略,并尋找最適合您品牌的方法。

    View details

  • 7-11

    2020

    微信營(yíng)銷(xiāo) / 2020-07-11

    騰訊內(nèi)部出招告訴你如何玩轉(zhuǎn)微信運(yùn)營(yíng)--大連網(wǎng)站建設(shè)分享

    微信公眾號(hào)運(yùn)營(yíng)之?dāng)?shù)據(jù)分析在開(kāi)始聊數(shù)據(jù)分析之前,先和大家分享一些我總結(jié)的規(guī)律:1.每天的8點(diǎn)、12點(diǎn)和22點(diǎn)是閱讀高峰期,這3個(gè)時(shí)間點(diǎn)是發(fā)布微信公眾號(hào)文章的理想時(shí)間;而垃圾時(shí)間是

    View details

  • 8-24

    2023

    微信營(yíng)銷(xiāo) / 2023-08-24

    什么是桂平網(wǎng)絡(luò)推廣?

    相比傳統(tǒng)的廣告宣傳方式,桂平網(wǎng)絡(luò)推廣可以有效降低企業(yè)的推廣成本。通過(guò)有效的網(wǎng)絡(luò)推廣策略,企業(yè)可以根據(jù)需求選擇不同的推廣方式和渠道,靈活控制推廣預(yù)算,既能節(jié)省推廣費(fèi)用,又能取得更好的推廣效果。

    View details